export type LoadState = 'offline' | 'loading' | 'connected' | 'error';

export type NFTDetails = {
    nftAddr: string;
    tokenID: bigint;
}

export type OffersTraderInfo = {
    account: string;
    confirmation: boolean;
    items: NFTDetails[];
}

export type Offer = {
    id: bigint;
    executed: boolean;
    name: string;
    initiator: OffersTraderInfo;
    recipient: OffersTraderInfo;
}

export type Metadata = {
    img?: string;
    name: string;
    contract: string;
    checked?: boolean;
    tokenId: bigint;
}

export type MetadataList = Metadata[];

export type OfferWithNFTs = {
    initiator: string;
    address: string;
    listOfNftInitiator: MetadataList;
    listOfNftRecipient: MetadataList;
}

export type OfferType = 'outgoing' | 'incoming';

export type NFTsListType = 'suggested' | 'desired'

export type TokenInfo = {
    tokenURI: string;
    tokenID: bigint;
    tokenContract: string;
}

export type DataForSetP2P = {
    walletInitiator: string;
    walletReceiver: string;
    walletConnectionOffer: string;
    walletICECandidates: string;
    isInitiator: boolean;
}

export type DataForGetP2P = {
    walletInitiator: string;
    walletReceiver: string;
    isInitiator: boolean;
}